/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.managed;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.Compra;
import sv.com.intesal.compra.bean.Proveedor;
import sv.com.intesal.compra.controlador.CompraControlador;
import sv.com.intesal.seguridad.managed.SessionManaged;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "compraQuickManaged")
@ViewScoped
public class CompraQuickManaged implements Serializable {

    private Boolean flagStep_1;
    private Boolean flagStep_2;
    private Mensaje m;
    private SessionManaged sm;
    private Proveedor selectedProveedor;
    /*ENCA*/
    private Compra selectedEncaCompra;
    private List<Compra> encaCompras;
    /*DETA*/
    private Compra selectedDetaCompra;
    private List<Compra> detaCompras;
    private Compra selectedDetaCompraTotales;

    public CompraQuickManaged() {

        this.flagStep_1 = true;
        this.flagStep_2 = false;

        this.m = new Mensaje();
        this.sm = new SessionManaged();

        this.selectedProveedor = new Proveedor();
        this.selectedEncaCompra = new Compra();
        this.selectedDetaCompra = new Compra();
        this.selectedDetaCompraTotales = new Compra();
        this.detaCompras = null;
        this.encaCompras = null;
    }

    public void buscarGrid() {

        try {
            if (sm.validar_rol_usuario("wfrmcon_Compra", sm.buscar) == true) {
                this.selectedEncaCompra.setId_p(this.selectedProveedor.getCodigo_p());
                CompraControlador cc = new CompraControlador();
                this.encaCompras = cc.getConsulta_EncaCompra(this.selectedEncaCompra);
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void ocultarFlag_1() {
        try {
            if (this.selectedDetaCompra == null) {
                m.messageError("DEBE ELEGIR UN REGISTRO PARA CONTINUAR");
            } else if (this.selectedDetaCompra != null) {
                this.flagStep_1 = false;
                this.flagStep_2 = true;

                CompraControlador cc = new CompraControlador();
                this.detaCompras = cc.getDeta_Compra(this.selectedDetaCompra.getId_c());
                this.selectedDetaCompraTotales = cc.getTotales_x_Compra(this.selectedDetaCompra.getId_c());
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void ocultarFlag_2() {
        try {
            this.flagStep_1 = true;
            this.flagStep_2 = false;
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void getProveedor_Quick(Proveedor pr) {
        try {
            this.selectedProveedor = pr;
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void redireccionar_AbonoCompra() {
        try {
            if (this.validarRedireccionar() == true) {
                CompraControlador cc = new CompraControlador();
                cc.redireccionar_AbonoCompra(this.selectedDetaCompra);
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void redireccionar_DevolucionCompra() {
        try {
            if (this.validarRedireccionar() == true) {
                CompraControlador cc = new CompraControlador();
                cc.redireccionar_DevolucionCompra(this.selectedDetaCompra);
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    private Boolean validarRedireccionar() throws Exception {
        try {
            Boolean var_return = true;

            if (this.selectedDetaCompra == null) {
                m.messageError("DEBE ELEGIR UN REGISTRO A ELIGIR");
                var_return = false;
            }
            if (var_return == true) {
                if (this.selectedDetaCompra.getEstado_c().equals("A")) {
                    m.messageError("NO PUEDE ELEGIR EL REGISTRO. YA ESTA ANULADO!");
                    var_return = false;
                }
                if (this.selectedDetaCompra.getId_c() == null) {
                    m.messageFatal("NO PUEDE ELEGIR EL REGISTRO. NO TIENE CODIGO ASIGNADO. ERROR");
                    var_return = false;
                }
            }
            if (var_return == true) {
                if (this.detaCompras == null) {
                    m.messageFatal("NO HAY MATERIALES EN LA COMPRA DEBE ELEGIR OTRO REGISTRO ERROR");
                    var_return = false;
                } else if (this.detaCompras.size() <= 0) {
                    m.messageFatal("NO HAY MATERIALES EN LA COMPRA DEBE ELEGIR OTRO REGISTRO ERROR");
                    var_return = false;
                }
            }
            return var_return;
        } catch (Exception e) {
            throw new Exception(e);
        }
    }

    /*
    SETTERS GETTERS
     */
    public Proveedor getSelectedProveedor() {
        if (selectedProveedor == null) {
            selectedProveedor = new Proveedor();
        }
        return selectedProveedor;
    }

    public void setSelectedProveedor(Proveedor selectedProveedor) {
        this.selectedProveedor = selectedProveedor;
    }

    public Boolean getFlagStep_1() {
        return flagStep_1;
    }

    public void setFlagStep_1(Boolean flagStep_1) {
        this.flagStep_1 = flagStep_1;
    }

    public Boolean getFlagStep_2() {
        return flagStep_2;
    }

    public void setFlagStep_2(Boolean flagStep_2) {
        this.flagStep_2 = flagStep_2;
    }

    public List<Compra> getDetaCompras() {
        return detaCompras;
    }

    public void setDetaCompras(List<Compra> detaCompras) {
        this.detaCompras = detaCompras;
    }

    public List<Compra> getEncaCompras() {
        return encaCompras;
    }

    public void setEncaCompras(List<Compra> encaCompras) {
        this.encaCompras = encaCompras;
    }

    public Compra getSelectedDetaCompra() {
        if (selectedDetaCompra == null) {
            selectedDetaCompra = new Compra();
        }
        return selectedDetaCompra;
    }

    public void setSelectedDetaCompra(Compra selectedDetaCompra) {
        this.selectedDetaCompra = selectedDetaCompra;
    }

    public Compra getSelectedEncaCompra() {
        if (selectedEncaCompra == null) {
            selectedEncaCompra = new Compra();
        }
        return selectedEncaCompra;
    }

    public void setSelectedEncaCompra(Compra selectedEncaCompra) {
        this.selectedEncaCompra = selectedEncaCompra;
    }

    public Compra getSelectedDetaCompraTotales() {
        if (selectedDetaCompraTotales == null) {
            selectedDetaCompraTotales = new Compra();
        }
        return selectedDetaCompraTotales;
    }

    public void setSelectedDetaCompraTotales(Compra selectedDetaCompraTotales) {
        this.selectedDetaCompraTotales = selectedDetaCompraTotales;
    }
}